package com.firemoss.atonement.test.metadata.inspectors.bindability
{
	import com.firemoss.atonement.test.metadata.inspectors.bindability.objects.*;
	import com.firemoss.atonement.metadata.inspectors.bindability.*;
	
	import org.flexunit.assertThat;
	import org.flexunit.asserts.assertEquals;
	import org.hamcrest.collection.hasItems;

	public class BindabilityInspectorTests
	{	
		private var inspector :IBindabilityInspector = new DefaultBindabilityInspectorFactory().create( null );
		
		[Test]
		public function test_entire_object_bindable() : void
		{
			var inspection : Array = inspector.inspect( EntireObjectBindable )
			assertThat( inspection, hasItems( "propertyChange" ) )
		}
		
		[Test]
		public function test_entire_object_bindable_with_custom_getter_event() : void
		{
			var inspection : Array = inspector.inspect( EntireObjectBindableWithCustomGetterEvent )
			assertThat( inspection, hasItems( "customGetterEvent", "propertyChange" ) )
		}
		
		[Test]
		public function test_entire_object_bindable_with_custom_property_event() : void
		{
			var inspection : Array = inspector.inspect( EntireObjectBindableWithCustomPropertyEvent )
			assertThat( inspection, hasItems( "customPropertyEvent", "propertyChange" ) )
		}
		
		[Test]
		public function test_single_getter_bindable() : void
		{
			var inspection : Array = inspector.inspect( SingleGetterBindable )
			assertThat( inspection, hasItems( "propertyChange" ) )
		}
		
		[Test]
		public function test_single_getter_bindable_with_custom_event() : void
		{
			var inspection : Array = inspector.inspect( SingleGetterBindableWithCustomEvent )
			assertThat( inspection, hasItems( "customGetterEvent" ) )
		}
		
		
		[Test]
		public function test_single_property_bindable() : void
		{
			var inspection : Array = inspector.inspect( SinglePropertyBindable )
			assertThat( inspection, hasItems( "propertyChange" ) )
		}
		
		[Test]
		public function test_single_property_bindable_with_custom_event() : void
		{
			var inspection : Array = inspector.inspect( SinglePropertyBindableWithCustomEvent )
			assertThat( inspection, hasItems( "customPropertyEvent" ) )
		}
		
		[Before]
		public function setUp():void
		{
		}
		
		[After]
		public function tearDown():void
		{
		}
		
		[BeforeClass]
		public static function setUpBeforeClass():void
		{
		}
		
		[AfterClass]
		public static function tearDownAfterClass():void
		{
		}
		
		
	}
}